@echo off
:: 强制使用 UTF-8 编码（代码页 65001）
chcp 65001 > nul
setlocal enabledelayedexpansion

:: =============================================
:: 脚本功能：清理Maven本地仓库中的临时文件
:: 修复版本：正确处理带空格的路径
:: =============================================

:: 1. 设置默认Maven仓库路径
set "DEFAULT_MAVEN_REPO=%USERPROFILE%\.m2\repository"

:: 2. 检查是否传入了自定义路径
if "%~1"=="" (
    set "MAVEN_REPO=%DEFAULT_MAVEN_REPO%"
    echo [INFO] 使用默认Maven仓库路径: %MAVEN_REPO%
) else (
    set "MAVEN_REPO=%~1"
    echo [INFO] 使用自定义仓库路径: %MAVEN_REPO%
)

:: 3. 检查路径是否存在
if not exist "%MAVEN_REPO%" (
    echo [ERROR] 仓库路径不存在: %MAVEN_REPO%
    pause
    exit /b 1
)

:: 4. 用户确认
echo ============================================
echo 即将清理以下Maven本地仓库中的临时文件:
echo 仓库路径: %MAVEN_REPO%
echo 目标文件:
echo   - 所有 *.lastUpdated 文件
echo   - 所有 _remote.repositories 文件
echo   - 所有 *.sha1 文件
echo ============================================
choice /c YN /n /m "确认清理? (Y/N)"
if errorlevel 2 (
    echo [INFO] 用户取消操作
    pause
    exit /b 0
)

:: 5. 开始清理
set "DELETED_FILES=0"
set "LOG_FILE=%TEMP%\maven_clean_%date:~0,4%%date:~5,2%%date:~8,2%.log"

echo [INFO] 开始清理，日志文件: %LOG_FILE%
echo 清理时间: %DATE% %TIME% > "%LOG_FILE%"
echo 仓库路径: %MAVEN_REPO% >> "%LOG_FILE%"

:: 修复关键部分：使用正确的路径引用方式
for /r "%MAVEN_REPO%" %%f in (*.lastUpdated) do (
    del "%%f" >> "%LOG_FILE%" 2>&1
    if !errorlevel! equ 0 (
        set /a DELETED_FILES+=1
        echo [DEL] %%f >> "%LOG_FILE%"
    )
)

for /r "%MAVEN_REPO%" %%f in (_remote.repositories) do (
    del "%%f" >> "%LOG_FILE%" 2>&1
    if !errorlevel! equ 0 (
        set /a DELETED_FILES+=1
        echo [DEL] %%f >> "%LOG_FILE%"
    )
)

for /r "%MAVEN_REPO%" %%f in (*.sha1) do (
    del "%%f" >> "%LOG_FILE%" 2>&1
    if !errorlevel! equ 0 (
        set /a DELETED_FILES+=1
        echo [DEL] %%f >> "%LOG_FILE%"
    )
)

:: 6. 输出结果
echo ============================================
echo [INFO] 清理完成!
echo [INFO] 共删除文件: %DELETED_FILES% 个 
echo [INFO] 日志路径: %LOG_FILE%
echo ============================================

pause